<?php

/*
    realizzazione del customtype commessa

    questo va incluso nel file plugin che utilizza il post type
 */

// fissa gli hook
function wpf_commessa_hooks()
{
	// creo il plugin ed i relativi menu
	register_activation_hook(__FILE__, 'wpf_commessa_rewrite_flush'); // serve per i permalink
	add_action('init', 'wpf_commessa_init'); // quando inizializzo la pagina
	add_action('admin_menu', 'wpf_commessa_add_ui'); // quando genero il men di amministrazione
	add_action('init', 'wpf_commessa_add_boxes'); // solo per compatibilità
// 	add_action('contextual_help', 'wpf_commessa_help_text', 10, 3); // genero l'help contestuale ai post, in amministrazione

	// modifico la visualizzazione dei custom-post
// 	add_filter('the_content', 'wpf_commessa_view'); // quando visualizzo il testo
	//add_filter('the_title','wpf_progetto_title'); // quando visualizzo il titolo

	// genero la tabella per la visualizzazione dei fascicoli :
// 	add_filter('manage_wpf_progetto_posts_columns', 'wpf_progetto_list_column_header'); // aggiunge la colonna "azienda" alla lista dei fascicoli
// 	add_filter('manage_edit-wpf_progetto_sortable_columns', 'wpf_progetto_list_sort_columns'); // rende ordinabile per una colonna
// 	add_action('manage_wpf_progetto_posts_custom_column', 'wpf_progetto_list_column_row', 10, 2); // riempie la colonna azienda alla lista dei fascicoli
// 	add_filter('views_edit-wpf_progetto', 'wpf_progetto_link_list'); // per aggiungere link nella lista dei progetti

	// salvo i dati dei vari box creati
	add_action('save_post', 'wpf_commessa_generale_save', 10, 2);

// 	add_action('the_post', 'wpf_progetto_extends'); // aggiunge al progetto i suoi customfields

// 	add_filter('wpf_progetto_available_statuses', 'wpf_filter_status');
	add_filter('wpf_commessa_available_statuses', 'wpf_commessa_filter_status');
}

// inizializza quello che serve
function wpf_commessa_init()
{

	// creazione del posttype
	//@ATTENTION modificare le varie descrizioni
	$labels = array(
		'name' => _x('Commesse', 'Commesse'),
		'singular_name' => _x('Commessa', 'Nome singolare delle commesse'),
		'add_new' => _x('Aggiungi nuova', 'wpf_commessa'),
		'add_new_item' => __('Nuova Commessa'),
		'edit_item' => __('Modifica Commessa'),
		'new_item' => __('Nuova Commessa'),
		'all_items' => __('Tutte le commesse'),
		'view_item' => __('Visualizza questa commessa'),
		'search_items' => __('Cerca una commessa'),
		'not_found' => __('Nessuna commessa trovata'),
		'not_found_in_trash' => __('Non ci sono commesse nel cestino'),
		'parent_item_colon' => '',
		'menu_name' => 'Commesse'
	);

	$args = array(
		'labels' => $labels,
		'public' => true,
		'publicly_queryable' => true,
		'show_ui' => true,
		'show_in_menu' => 'edit.php?post_type=wpf_progetto',
		'query_var' => true,
		'rewrite' => array(
			'slug' => 'commessa'
		),
		'capability_type' => array(
			'commessa', 'commesse'
		),
		'map_meta_cap' => true,
		'has_archive' => true,
		'hierarchical' => true,
		'menu_position' => null,
		'supports' => array(
			'title'
		)
	);

	register_post_type('wpf_commessa', $args);

	wpf_tassonomia_registra_partner('wpf_commessa');
        

}


function wpf_commessa_add_ui() {
        // attiva il menu partner nel progetto
        add_submenu_page('edit.php?post_type=wpf_progetto', 'Partners', 'Partner', 'edit_commesse', 'commesse_list', 'wpf_tassonomia_page_partner');   
        
}


// aggiunge alla commessa i suoi customtype
function wpf_commessa_extends($post) {

	// solo in caso di commessa
	if ($post->post_type != 'wpf_commessa')
	{
		return;
	}

	$post->codice = get_post_meta($post->ID,'codice',true);
	$post->datainizio = get_post_meta($post->ID,'datainizio',true);
	$post->durata = get_post_meta($post->ID,'durata',true);
	$post->duratamacro = get_post_meta($post->ID,'duratamacro',true);
	$post->duratamicro = get_post_meta($post->ID,'duratamicro',true);
	$post->respmacro = get_post_meta($post->ID,'respmacro',true);
	$post->respmicro = get_post_meta($post->ID,'respmicro',true);
	$post->fabbisogno = get_post_meta($post->ID,'fabbisogno',true);
	$post->obiettivi = get_post_meta($post->ID,'obiettivi',true);
	$post->analisi = get_post_meta($post->ID,'analisi',true);
	$post->validazione = get_post_meta($post->ID,'validazione',true);
	$post->esito = get_post_meta($post->ID,'esito',true);
	$post->datavalida = get_post_meta($post->ID,'datavalida',true);
	$post->respvalida = get_post_meta($post->ID,'respvalida',true);

// 	//@TODO questo deve passare in rendicontazione
// 	$post->importo = get_post_meta($post->ID,'importo',true);
// 	$post->commessa = get_post_meta($post->ID,'commessa',true);
// 	$post->committenti = get_post_meta($post->ID,'committenti',true);


}

// serve per gestire i permalink
function wpf_commessa_rewrite_flush()
{
	wpf_commessa_init();
	flush_rewrite_rules();
}

// aggiunge i boxes necessari a
function wpf_commessa_add_boxes()
{
	wpf_commessa_generale_box();
}

function wpf_commessa_generale_box()
{
	global $post;
	global $wpf_domain;

	// Use nonce for verification
	wp_nonce_field(plugin_basename(__FILE__), 'wpf_commessa_noncename');

	/*
	$users_list = get_users('blog_id=1&orderby=nicename&role=manager');
	$users = '';

	foreach ($users_list as $user)
	{
		$users .= $user->user_login.',';
	}
	*/
	
	$readonly = (!current_user_can('approve_commesse')) && ($post->post_status != 'published');

	$form_fields = array(
        	'numero_commessa' => array(
                	'type' => ($readonly ? 'readonly' : 'smalltext'),
                	'description' => __("Numero commessa", WPF_DOMAIN ),
                	'howto' => __("Inserisci qui un numero univoco per la commessa", WPF_DOMAIN )
            ),
           	'bando_riferimento' => array(
	                'type' => ($readonly ? 'readonly' : 'file'),
	                'description' => __("Bando di riferimento", WPF_DOMAIN ),
	                'howto' => __("Inserisci qui il bando di riferimento", WPF_DOMAIN )
            ),
        	'estremi_bando' => array(
	                'type' => ($readonly ? 'readonly' : 'longtext'),
	                'description' => __("Estremi bando", WPF_DOMAIN ),
	                'howto' => __("Inserisci qui gli estremi del bando", WPF_DOMAIN )
            ),
        	'data_scadenza' => array(
	                'type' => ($readonly ? 'readonly' : 'date'),
	                'description' => __("Data scadenza", WPF_DOMAIN ),
	                'howto' => __("Inserisci qui la data di scadenza del bando)", WPF_DOMAIN )
            ),
        	'descrizione' => array(
	                'type' => ($readonly ? 'readonly' : 'text'),
	                'description' => __("Descrizione", WPF_DOMAIN ),
	                'howto' => __("Inserisci qui la descrizione del bando", WPF_DOMAIN )
            ),
        	'note' => array(
	                'type' => ($readonly ? 'readonly' : 'text'),
	                'description' => __("Note", WPF_DOMAIN ),
	                'howto' => __("Inserisci qui le note", WPF_DOMAIN )
            )
    );

    register_post_box('wpf_commessa', 'generale_commessa', 'Generale', 'normal', 'core', $form_fields);
}

// cattura e salva i dati del box generale
function wpf_commessa_generale_save($post_id, $post)
{
	// If it is our form has not been submitted, so we dont want to do anything
	if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
	{
		return;
	}

	// verify this came from the our screen and with proper authorization,
	// because save_post can be triggered at other times
	/*if (!wp_verify_nonce(@$_POST['wpf_commessa_noncename'], plugin_basename(__FILE__)))
	{
		return;
	}*/

	if (!current_user_can('edit_commesse'))
	{
		return;
	}

        if ($post->post_type != 'wpf_commessa')
	{
		return;
	}

	if ($post->post_status == 'publish')
	{
		return;
	}

	if ($post->post_status == 'closed')
	{
		return;
	}

	// OK, you can save the data
	$my_post = array();
	$my_post['ID'] = $post_id;
	$my_post['post_title'] = $post->nome_commessa;
	$my_post['post_content'] = $post->note;
	$my_post['post_excerpt'] = $post->descrizione;

	remove_action('save_post', 'wpf_commessa_generale_save');
	wp_update_post($my_post);
	add_action('save_post', 'wpf_commessa_generale_save');

	admin_field_save_post_meta($post_id,'numero_commessa',$post->numero_commessa);
	admin_field_save_post_meta($post_id,'bando_riferimento',$post->bando_riferimento);
	admin_field_save_post_meta($post_id,'estremi_bando',$post->estremi_bando);
	admin_field_save_post_meta($post_id,'data_scadenza',$post->data_scadenza);
}

function wpf_commessa_filter_status($statuses)
{
	global $post;

    $new_statuses = array();

    $new_statuses['draft']    = $statuses['draft'];
    $new_statuses['publish']    = $statuses['publish'];
	
    return $new_statuses;
}

wpf_commessa_hooks();

?>
